Raspberry Pi 4とMacをUSB type Cケーブルで接続してMacのインターネット接続を共有する手順 #RaspberryPi
ラズパイ4から電源供給ポートがUSB type Cになり、MacとUSB type Cケーブルで接続すれば、Macのインターネット接続の共有とリモートデスクトップ接続ができたのでその手順を説明します。
OSイメージのmicro SDカードへの書き込み
ラズパイ公式サイトでRaspbianのイメージをダウンロードします。デスクトップも使いたいので、2019年12月時点で最新の Raspbian Buster with desktop(Release date: 2019-09-26) にしました。
OSイメージのmicro SDカードへの書き込みにはEtcherがお手軽でおすすめです。Mac/Windows/Linux向けのバイナリが公開されています。
micro SDカードのマウント
Etcherを使った場合、OSイメージの書き込みが終わった直後はmicro SDカードがマウントされていませんので手動でマウントする必要があります。コマンドラインから行う場合は以下のような手順になります。単純にカードを物理的に一度抜き差しする、でも良いと思います。
$ diskutil list # --- snip --- /dev/disk2 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *15.4 GB disk2 1: Windows_FAT_32 boot 268.4 MB disk2s1 2: Linux 3.5 GB disk2s2 $ diskutil mount /dev/disk2s1 Volume boot on /dev/disk2s1 mounted $ ls /Volumes/boot COPYING.linux bcm2710-rpi-3-b.dtb fixup4x.dat start.elf LICENCE.broadcom bcm2710-rpi-cm3.dtb fixup_cd.dat start4.elf bcm2708-rpi-b-plus.dtb bcm2711-rpi-4-b.dtb fixup_db.dat start4cd.elf bcm2708-rpi-b.dtb bootcode.bin fixup_x.dat start4db.elf bcm2708-rpi-cm.dtb cmdline.txt issue.txt start4x.elf bcm2708-rpi-zero-w.dtb config.txt kernel.img start_cd.elf bcm2708-rpi-zero.dtb fixup.dat kernel7.img start_db.elf bcm2709-rpi-2-b.dtb fixup4.dat kernel7l.img start_x.elf bcm2710-rpi-2-b.dtb fixup4cd.dat kernel8.img bcm2710-rpi-3-b-plus.dtb fixup4db.dat overlays
OSイメージの編集
micro SDカードにOSイメージを書き込んだ段階ではSSHは無効化されています。以下のようにboot
ディレクトリ直下にssh
という名前の空ファイルを作成することでSSHを有効化できます。
$ touch /Volumes/boot/ssh
boot/config.txt
の末尾にdtoverlay=dwc2
という1行を追記します。
$ echo "dtoverlay=dwc2" >> /Volumes/boot/config.txt
次にcmdline.txtを編集します。rootwait
のうしろにスペースひとつ空けてmodules-load=dwc2,g_ether
と追記します。
$ vim /Volumes/boot/cmdline.txt
以上でOSイメージの編集はおわりです。ファインダーもしくはコマンドライン上でmicro SDカードをアンマウントしてからMacから取り外します。
# コマンドラインでmicro SDカードをアンマウントするコマンドの例 $ diskutil unmount /dev/disk2s1 Volume boot on disk2s1 unmounted
ラズパイの起動
micro SDカードをラズパイに挿入したらMacとラズパイをUSB type Cケーブルで接続します。ラズパイへ電源が供給され、起動シーケンスがはじまります。(ちなみに写真のケースはPimoroniの"Pibow Coupé 4 – Rainbow"にファンを取り付けたものです)
Macのインターネット接続をUSB経由で共有
以下の手順を実行します。
- 「システム環境設定」の「共有」をクリック
- "共有する接続経路"に "WiFi"を選択
- "相手のコンピュータでのポート"は"RNDIS/Ethernet Gadget"を選択
- 「インターネット共有」のチェックボックスをオンにする
SSHログイン
Macのターミナル上で、以下のコマンドを実行します。ラズパイのデフォルトのホスト名はraspberrypi.local
、ユーザー名はpi
、パスワードはraspberry
です。
$ ssh [email protected]
無事ログインできたら、Macからラズパイにリモートデスクトップ接続するためにVNCサーバーソフトウェアをインストールします。ログインできなかった場合は、本記事の後ろの方に記載した対処法を試してみてください。
VNCによるリモートデスクトップ接続
※デスクトップを使う必要がなければこのステップはスキップしてかまいません。
TightVNCをインストールします。
$ sudo apt update $ sudo apt upgrade $ sudo apt install tightvncserver
TightVNCをインストールしたらそのままコマンドラインから起動します。初回起動時にはパスワードの設定を求められます。
$ tightvncserver
apt
やtightvncserver
コマンドを実行したときに以下のような警告が出た場合は、
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "UTF-8", LANG = "en_GB.UTF-8" are supported and installed on your system. perl: warning: Falling back to a fallback locale ("en_GB.UTF-8").
ラズパイの/etc/ssh/ssh_config
のAcceptEnv LANG LC_*
の行をコメントアウトして再起動したら解消しました。こちらの記事を参考にしました。
Macからラズパイにリモートデスクトップ接続を行います。ファインダーのメニューバーの「移動」をクリックして「サーバへ接続」を選択します。
ラズパイ4のIPアドレスのポート5901番に接続します。
tightvncserver
を初回起動した時に設定したパスワードを入力します。
VNC接続でラズパイ4のデスクトップが表示されました。
以上で、最低限作業できる状態になりました。あとはraspi-config
コマンド等で必要なセットアップは済ませておきましょう。
まとめ
ラズパイ4とMacをUSB type Cケーブル1本でつなぐだけで開発を始められるようにする手順をご紹介しました。リモートデスクトップ接続だと動画を扱う作業などはちょっと厳しそうですが、プログラミングなどは問題なくできると思います。
おまけ: SSHログインが失敗した場合
一度ラズパイのデフォルトホスト名raspberrypi.local
でラズパイにSSHログインしたことがある状態で、別のラズパイに対して同じホスト名でSSHログインを試みると以下のように警告されます。こうなった場合、ホスト名raspberrypi.local
に対してping
コマンドを発行してIPアドレスを特定してIP直書きでSSHログインするなどして対処します。無事ログインできたらきちんと独自のホスト名を設定しましょう。
$ ssh [email protected] @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: POSSIBLE DNS SPOOFING DETECTED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ The ECDSA host key for raspberrypi.local has changed, and the key for the corresponding IP address xxxx::xxxx:xxxx:xxxx:xxxxxxxx is unknown. This could either mean that DNS SPOOFING is happening or the IP address for the host and its host key have changed at the same time. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Please contact your system administrator. Add correct host key in /Users/xxxxxxxx/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /Users/xxxxxxxx/.ssh/known_hosts:58 ECDSA host key for raspberrypi.local has changed and you have requested strict checking. Host key verification failed.
$ ping raspberrypi.local PING raspberrypi.local (xx.xx.xx.xx): 56 data bytes Request timeout for icmp_seq 0 64 bytes from 169.254.153.65: icmp_seq=1 ttl=64 time=0.290 ms
Macでインターネット共有を有効化すると、ラズパイのIPアドレスが変化します。raspberrypi.local
にping
コマンドを発行して、新しく割り当てられたIPアドレスを確認します。
$ ping raspberrypi.local PING raspberrypi.local (169.254.226.199): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 ^C --- raspberrypi.local ping statistics --- 4 packets transmitted, 0 packets received, 100.0% packet loss $ ping raspberrypi.local PING raspberrypi.local (169.254.226.199): 56 data bytes ping: sendto: No route to host Request timeout for icmp_seq 0 ping: sendto: Host is down Request timeout for icmp_seq 1 ping: sendto: Host is down Request timeout for icmp_seq 2 ^C --- raspberrypi.local ping statistics --- 8 packets transmitted, 0 packets received, 100.0% packet loss $ ping raspberrypi.local PING raspberrypi.local (192.168.2.3): 56 data bytes 64 bytes from 192.168.2.3: icmp_seq=0 ttl=64 time=0.672 ms 64 bytes from 192.168.2.3: icmp_seq=1 ttl=64 time=0.360 ms 64 bytes from 192.168.2.3: icmp_seq=2 ttl=64 time=0.303 ms
参考
- Raspberry Pi 4 Model B
- Etcher
- SSH into Pi Zero over USB — desertbot.io
- How to disable onboard WiFi and Bluetooth on Raspberry Pi 3
- Macでインターネット接続を共有して、Wifiアクセスポイントにする方法! | Aprico
- MacからRaspberry PiにVNCでリモートデスクトップ接続する方法
- TightVNC: VNC-Compatible Free Remote Control / Remote Desktop Software
- Problem with locale - Raspberry Pi Forums